import { IPSDERDEFieldMap } from './ipsderdefield-map';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDERAggDataDEFieldMap
 */
export interface IPSDERAggDataDEFieldMap extends IPSDERDEFieldMap {
  /**
   * 钻取条件格式
   * @type {string}
   */
  drillDownCondFormat: string;

  /**
   * 公式列格式
   * @type {string}
   */
  formulaFormat: string;

  /**
   * 映射类型
   * @description 值模式 [实体聚合数据关系属性映射类型] {SUM：合计、 AVG：平均、 MAX：最大值、 MIN：最小值、 COUNT：计数、 GROUPBY：分组、 GROUPBY_DAYOFWEEK：按周天分组、 GROUPBY_DAYOFMONTH：按月天分组、 GROUPBY_DAYOFYEAR：按年天分组、 GROUPBY_WEEK：按周分组、 GROUPBY_MONTH：按月份分组、 GROUPBY_QUARTER：按季度分组、 GROUPBY_YEAR：按年份分组、 GROUPBY_HOUR：按小时分组、 GROUPBY_MINUTE：按分钟分组、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'SUM' | 'AVG' | 'MAX' | 'MIN' | 'COUNT' | 'GROUPBY' | 'GROUPBY_DAYOFWEEK' | 'GROUPBY_DAYOFMONTH' | 'GROUPBY_DAYOFYEAR' | 'GROUPBY_WEEK' | 'GROUPBY_MONTH' | 'GROUPBY_QUARTER' | 'GROUPBY_YEAR' | 'GROUPBY_HOUR' | 'GROUPBY_MINUTE' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  mapType:
    | string
    | 'SUM'
    | 'AVG'
    | 'MAX'
    | 'MIN'
    | 'COUNT'
    | 'GROUPBY'
    | 'GROUPBY_DAYOFWEEK'
    | 'GROUPBY_DAYOFMONTH'
    | 'GROUPBY_DAYOFYEAR'
    | 'GROUPBY_WEEK'
    | 'GROUPBY_MONTH'
    | 'GROUPBY_QUARTER'
    | 'GROUPBY_YEAR'
    | 'GROUPBY_HOUR'
    | 'GROUPBY_MINUTE'
    | 'USER'
    | 'USER2'
    | 'USER3'
    | 'USER4';

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;
}
